
import HomeView from '@/App.vue'
import Xinxi from '@/views/gxy/Xinxi.vue'
import Jianzhu from '@/views/gxy/Jianzhu.vue'
import EduView from '@/views/news/EduView.vue'
//import SportView from '@/views/news/SportView.vue'
import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router'

// 创建路由列表
const routes = [
    {
        path:"/home",
        name:"home",
        //component:HomeView
        // 重定向
        redirect:"/edu"
    },
    // 路由嵌套
    {
        path:"/gxy",
        name: "gxy",
        children:[
            {
                // 子路由的path不能用/开头
                path:"xinxi",
                name:"xinxi",
                component:Xinxi
            },
            {
                path:"jz",
                name:"jz",
                component:Jianzhu
            }
        ]
    },
    
    {
        path:"/edu",
        name:"edu",
        component:EduView
    },
    {
         // 动态路由，使用 /: 分割
        path:"/sport/:title/:content",
        name:"sport",
        // 懒加载，项目启动时不加载，只有在使用的时候才加载，
        component: ()=>import("@/views/news/SportView.vue")
    }
];

// 创建路由
const router = createRouter({
    // 路由模式
    // hash模式:createWebHashHistory(),访问地址栏中带有#
    // 常规的web模式：createWebHistory(),使用/来链接
    history:createWebHistory(),
    // 路由表
    routes:routes
});

// 路由守卫
// 用于控制路由的访问权限
// 常用于对路由： 捕获、中断、重定向
// 分类
// 全局导航守卫
// beforeEach() 路由改变前
// afterEach() 路由改变后
// 导航独享守卫
// beforeEnter() 路由进入前
// 组件导航守卫
// beforeRouteEnter() 路由进入前
// beforeRouteUpdate() 路由更新前
// beforeRouteLeave() 路由离开前
// beforeEach( (to,from,next)=>{} )
// to.path 捕获 目标路由
// from.path 捕获 源路由
// next() 放行
// next(false) 中断
// next('新路由') 重定向
// 应用场景
// 当访问一个网站 xxx.com
// 登入了之后 xxx.com/abc/123
// 在未登入情况前访问 xxx.com/abc/123
// 通过导航守卫进行判断，重定向 到 xxx.com
router.beforeEach((to,from,next) => {
  const isLogin = true;
  // 函数体
  //alert("我来自：" + from.path + "，要去：" + to.path); 
  // 判断是否登录
  if (isLogin)
  {
    alert("合法用户，验证成功，请放心使用");
    next();
  }
  // 没有成功
  else
  {
    alert("不合法用户，请重新登陆");
    next(false);
  }
});

// 导出
export default router;